package br.com.knowledge.persistence.hibernate.entities;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.hibernate.annotations.GenericGenerator;

/**
 * CadUsuario entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "cad_usuario", schema = "public")
public class CadUsuario implements java.io.Serializable {

	// Fields
	private Integer id;
	private String login;
	private String nmusuario;
	private String email;
	private String senha;
	private String newSenha;
	private Boolean indinativo;
	private Date datavalidade;
	private Boolean indadministrador;
	private Set<VisItemvisao> visItemvisaos = new HashSet<VisItemvisao>(0);
	private Set<CadUsuarioprojeto> cadUsuarioprojetos = new HashSet<CadUsuarioprojeto>(
			0);
	private Set<CadUsuarioprojeto> cadUsuarioprojetos_1 = new HashSet<CadUsuarioprojeto>(
			0);
	private Set<VisItemvisao> visItemvisaos_1 = new HashSet<VisItemvisao>(0);

	// Constructors

	/** default constructor */
	public CadUsuario() {
	}

	/** minimal constructor */
	public CadUsuario(String login, String nmusuario, String email, String senha) {
		this.login = login;
		this.nmusuario = nmusuario;
		this.email = email;
		this.senha = senha;
	}

	/** full constructor */
	public CadUsuario(String login, String nmusuario, String email,
			String senha, Boolean indinativo, Date datavalidade,
			Boolean indadministrador, Set<VisItemvisao> visItemvisaos,
			Set<CadUsuarioprojeto> cadUsuarioprojetos,
			Set<CadUsuarioprojeto> cadUsuarioprojetos_1,
			Set<VisItemvisao> visItemvisaos_1) {
		this.login = login;
		this.nmusuario = nmusuario;
		this.email = email;
		this.senha = senha;
		this.indinativo = indinativo;
		this.datavalidade = datavalidade;
		this.indadministrador = indadministrador;
		this.visItemvisaos = visItemvisaos;
		this.cadUsuarioprojetos = cadUsuarioprojetos;
		this.cadUsuarioprojetos_1 = cadUsuarioprojetos_1;
		this.visItemvisaos_1 = visItemvisaos_1;
	}

	// Property accessors
	@GenericGenerator(name = "generator", strategy = "increment")
	@Id
	@GeneratedValue(generator = "generator")
	@Column(name = "id", unique = true, nullable = false)
	public Integer getId() {
		return this.id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	@Column(name = "login", nullable = false, length = 50)
	public String getLogin() {
		return this.login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	@Column(name = "nmusuario", nullable = false, length = 60)
	public String getNmusuario() {
		return this.nmusuario;
	}

	public void setNmusuario(String nmusuario) {
		this.nmusuario = nmusuario;
	}

	@Column(name = "email", nullable = false, length = 50)
	public String getEmail() {
		return this.email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	@Column(name = "senha", nullable = false, length = 50)
	public String getSenha() {
		return this.senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	@Column(name = "indinativo", nullable = true)
	public Boolean getIndinativo() {
		return this.indinativo;
	}

	public void setIndinativo(Boolean indinativo) {
		this.indinativo = indinativo;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "datavalidade", length = 13)
	public Date getDatavalidade() {
		return this.datavalidade;
	}

	public void setDatavalidade(Date datavalidade) {
		this.datavalidade = datavalidade;
	}

	@Column(name = "indadministrador", nullable = true)
	public Boolean getIndadministrador() {
		return this.indadministrador;
	}

	public void setIndadministrador(Boolean indadministrador) {
		this.indadministrador = indadministrador;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "cadUsuario")
	public Set<VisItemvisao> getVisItemvisaos() {
		return this.visItemvisaos;
	}

	public void setVisItemvisaos(Set<VisItemvisao> visItemvisaos) {
		this.visItemvisaos = visItemvisaos;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "cadUsuario")
	public Set<CadUsuarioprojeto> getCadUsuarioprojetos() {
		return this.cadUsuarioprojetos;
	}

	public void setCadUsuarioprojetos(Set<CadUsuarioprojeto> cadUsuarioprojetos) {
		this.cadUsuarioprojetos = cadUsuarioprojetos;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "cadUsuario")
	public Set<CadUsuarioprojeto> getCadUsuarioprojetos_1() {
		return this.cadUsuarioprojetos_1;
	}

	public void setCadUsuarioprojetos_1(
			Set<CadUsuarioprojeto> cadUsuarioprojetos_1) {
		this.cadUsuarioprojetos_1 = cadUsuarioprojetos_1;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "cadUsuario")
	public Set<VisItemvisao> getVisItemvisaos_1() {
		return this.visItemvisaos_1;
	}

	public void setVisItemvisaos_1(Set<VisItemvisao> visItemvisaos_1) {
		this.visItemvisaos_1 = visItemvisaos_1;
	}

}